package db;

import domain.Activity;
import domain.Club;
import domain.MembershipApplication;
import web.PaginationSupport;

import java.util.List;

/**
 * 社团成员申请资源库接口
 *
 * @author liujiale
 */
public interface MembershipApplicationRepository {
    /**
     * 获取申请的总数
     * @return 申请的数量
     */
    long count();

    /**
     * 获取社团成员的申请
     * @param club 社团
     * @return  申请的数量
     */
    long countByClub(Club club);

    /**
     * 创建一个新的申请
     * @param membershipApplication 新申请的信息
     * @return 新创建的申请
     */
    MembershipApplication save(MembershipApplication membershipApplication);

    /**
     * 根据ID查找申请
     * @param membershipApplicationID 申请的ID
     * @return 对应ID的申请
     */
    MembershipApplication findOne(int membershipApplicationID);

    /**
     * 更新申请
     * @param membershipApplication 更新后的申请信息
     * @return 是否更新成功
     */
    boolean updateMembershipApplication(MembershipApplication membershipApplication);


    /**
     * 分页查找申请
     * @param pageNo 页码
     * @param pageSize 每页的数量
     * @return 分页的申请列表
     */
    PaginationSupport<MembershipApplication> findPage(int pageNo, int pageSize);



    /**
     * 删除申请
     * @param membershipApplicationID 申请的ID
     * @return 是否删除成功
     */
    boolean deleteMembershipApplication(int membershipApplicationID);

    /**
     * 获取所有申请
     * @return 所有申请的列表
     */
    List<MembershipApplication> findAll();

    /**
     * 获取社团所有申请
     * @param club  社团
     * @return  所有申请的列表
     */
    List<MembershipApplication> findAllByClub(Club club);

    /**
     * 通过UserID查找用户申请
     * @param userID    用户ID
     * @return  申请列表
     */
    List<MembershipApplication> findAllByUserID(int userID);
}
